#include "stdafx.h"
#include "crImageLoadResult.h"


NS_CR_BEGIN

namespace image
{
	namespace loader
	{

		CR_DLL TaskFragment::TaskFragment()
		{
			_def_path();
		}

		CR_DLL TaskFragment::TaskFragment(fun_type func)
			: _fun_type(func)
		{

		}

		void TaskFragment::SetOption(const int& t)
		{
			throw _STD runtime_error("unknown type to set image loader property!!");
		}

		void TaskFragment::SetOption(const Url& t)
		{
			_url = t;
		}

		CR_DLL void TaskFragment::SetOption(Url&& t)
		{
			_url = t;
		}

		void TaskFragment::SetOption(const DefaultPath& t)
		{
			_def_path = t;
		}

		
		CR_DLL void TaskFragment::SetOption(const CachePath& t)
		{
			_cache_path = t;
		}

		CR_DLL void TaskFragment::SetOption(void* t)
		{
			_param = std::make_unique<void*>(t);
		}

		CR_DLL void TaskFragment::Run(const Result& result)
		{
			if (_fun_type)
			{
				_fun_type(result, *_param);
			}
		}

	}
}

NS_CR_END